"""
文件名:LoginPage.py
    PO设计模式,核心,将每一个页面当做一个对象,把每个页面分为三层
        -表现层
        -操作层
        -业务层
    在Page类中,主要封装表现层和操作层
    -表现层---->元素定位,制作定位器
    -业务层---->元素操作
    -Page类继承Base类
"""

from Common.Base import Base, open_browser

login_url = 'http://localhost:8080/ecshop/user.php'


class LoginPage(Base):
    """封装表现层:制作定位器的过程"""
    username_loc = ('name', 'username')
    password_loc = ('name', 'password')
    remember_loc = ('name', 'remember')
    submit_loc = ('name', 'submit')
    result_loc = ('class name', 'f4_b')
    logo_loc = ('class name', 'logo')

    """封装操作层:针对表现层中元素的操作"""

    def input_username(self, username):
        """
        输入用户名
        :param username: 用户名
        :return:
        """
        self.send_keys(self.username_loc, username)

    def input_password(self, password):
        """
        输入密码
        :param password: 密码
        :return:
        """
        self.send_keys(self.password_loc, password)

    def click_login(self):
        """
        点击登录按钮
        :return:
        """
        self.click(self.submit_loc)

    def get_login_username(self):
        """
        获取登录之后的用户名
        :return: WebElement
        """
        return self.find_element(self.result_loc)

    def is_login_success(self, username):
        """
        判断是否登录成功,如果成功,返回True,反之返回False
        :return:
        """
        return self.is_text_equal_in_element(self.result_loc, username)

    def member_login(self):
        """
        测试账号登录
        :return:
        """
        self.input_username('root1')
        self.input_password('123456')
        self.click_login()


if __name__ == '__main__':
    login = LoginPage(open_browser())
    login.open_url(login_url)
    login.input_username('jerry')
    login.input_password('123456')
    login.click_login()
